package com.macro.mall.ums.service.account;

import com.github.pagehelper.Page;
import com.macro.mall.ums.domain.WxMember;
import com.macro.mall.ums.entity.WxMemberEntity;
import com.macro.mall.ums.service.account.bo.InsertWxMemberInput;
import com.macro.mall.ums.service.account.bo.PagedQueryWxMemberInput;
import com.macro.mall.ums.service.account.bo.UpdateWxMemberInput;

import java.util.List;

/**
 * 会员微信Service
 *
 * @author xuyanjun
 * @date 2019-12-08
 */
public interface WxMemberService {

    /**
     * 新增会员微信
     *
     * @param input input
     * @return 新增id
     */
    long insert(InsertWxMemberInput input);

    /**
     * 修改会员微信
     *
     * @param input input
     */
    void update(UpdateWxMemberInput input);

    /**
     * 删除会员微信
     *
     * @param id id
     */
    void delete(long id);

    /**
     * 根据Id获取会员微信
     *
     * @param id id
     * @return 会员微信
     */
    WxMemberEntity getById(long id);

    /**
     * 根据用户id获取用户微信
     *
     * @param userId 用户id
     * @return 用户微信
     */
    WxMemberEntity getByMemberId(long userId);

    /**
     * 根据openId获取用户微信
     *
     * @param openId openId
     * @return 用户微信
     */
    WxMemberEntity getByOpenId(String openId);

    /**
     * 根据unionId获取用户微信
     *
     * @param unionId unionId
     * @return 用户微信
     */
    WxMemberEntity getByUnionId(String unionId);

    /**
     * 根据批量Id获取会员微信
     *
     * @param batchIds 批量ids
     * @return 会员微信集合
     */
    List<WxMemberEntity> listByBatchIds(List<Long> batchIds);

    /**
     * 分页查询
     *
     * @param input input
     * @return 分页的会员微信
     */
    Page<WxMemberEntity> pagedQuery(PagedQueryWxMemberInput input);

    /**
     * 将实体对象转换成domain对象
     *
     * @param wxMemberEntity 实体
     * @return wxMember
     */
    WxMember entityToDomain(WxMemberEntity wxMemberEntity);

    /**
     * 将实体对象转换成domain对象
     *
     * @param wxMemberEntities 实体
     * @return wxMembers
     */
    List<WxMember> entityToDomain(List<WxMemberEntity> wxMemberEntities);

}